1. Field of the Invention
The present invention is directed in general to communications systems and methods for operating such systems. In one aspect, the present invention relates to the methods, systems and devices for improved decoding of convolutional codes.
2. Description of the Related Art
The most common form of encoding currently used in wireless communication channels is the serial concatenation of an inner cyclic redundancy check (CRC) code followed by an outer forward error correction code (FEC). One example of FEC code is the convolutional code which is used in many wireless channels in Global System for Mobile Communications (GSM)/Enhance Data rates for GSM Evolution (EDGE) second-generation (2G), Universal Mobile Telecommunications System (UMTS) third-generation (3G), and Long Term Evolution (LTE) fourth-generation (4G) mobile telecommunication technologies. Traditionally, FEC code is used to attempt correction of any errors during transmission over a wireless channel, while the use of CRC code is normally limited to detection of the existence of residual errors after FEC decoding. In practice, a CRC codeword is formed by computing parity bits and placing them at the end of an input message. Since the message forms part of the codeword itself, the CRC code is referred to as a systematic code.
Such convolutional codes are specified for use in the wireless standards in mainstream use today. One reason for their popularity is the existence of the Viterbi decoder, which determines the maximum likelihood of the accuracy of a transmitted message in an efficient and relatively uncomplicated manner. However, due to the success of the Viterbi decoder and its efficient implementation of the CRC portion of the CRC/Convolutional code concatenation, it is often ignored during error correction. Indeed, the CRC code is generally relegated to the purpose of residual error detection after convolutional decoding. As a result, error correction decoding is typically restricted to the use of convolutional code alone, even though it is recognized that CRC/convolutional code concatenation can provide more robust error correction performance.
Current approaches to decoding CRC/convolutional code include called-list decoding, where the Viterbi decoder is modified to output the ‘N’ most likely convolutional code messages. The CRC check is successively applied to these ‘N’ convolutional code messages until one passes, in which case it is accepted as being the transmitted message, or alternatively, none pass and decoder failure is declared. However, this approach has attendant drawbacks. First, the Viterbi decoder implementation requires significant modification to support the output of the ‘N’ maximum likely convolutional code messages. Second, the decoding of CRC and convolutional codes occurs separately and not jointly, and third, the complexity of list decoding increases linearly with ‘N.’
In view of the foregoing, it is apparent that there is a need for systems and methods for improved Viterbi decoding of convolutional codes for error correction.